package com.ruoyi.a2.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.a2.handle.PgGeometry84TypeHandler;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.enums.ActivityTypeEnum;
import com.ruoyi.common.enums.CleanStatusEnum;
import com.ruoyi.common.enums.CommonOKNOEnum;
import lombok.Data;

import java.util.Date;

/**
 * AIS动态信息对象 ais_dynamics_info
 *
 * @author ruoyi
 * @date 2025-02-20
 */
@Data
public class AisDynamicsInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键id */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** MMSI */
    @Excel(name = "MMSI")
    private String mmsi;

    /** 状态(1:进港 2:离港 3:正常 4:停靠 5:加速 6:减速 7:失联 8:追踪中断) */
    @Excel(name = "状态(1:进港 2:离港 3:正常 4:停靠 5:加速 6:减速 7:失联 8:追踪中断)")
    private Integer status = ActivityTypeEnum.DATA_3.getCode();

    /** 基准时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date baseTime;

    /** 经度 */
    @Excel(name = "经度")
    private Double lon;

    /** 纬度 */
    @Excel(name = "纬度")
    private Double lat;

    /** 地理坐标 */
    @Excel(name = "地理坐标")
    @TableField(typeHandler = PgGeometry84TypeHandler.class)
    private String geom;

    /** 航速 */
    @Excel(name = "航速")
    private Double speed;

    /** 航向 */
    @Excel(name = "航向")
    private Double way;

    /** 是否已更改状态(0:否 1:是) */
    @Excel(name = "是否已更改状态(0:否 1:是)")
    private Integer updateStatus = CommonOKNOEnum.NO.getCode();

    /** 清洗状态(0:正常 1:异常值剔除 2:空值填充 3:时空重采样) */
    @Excel(name = "清洗状态(0:正常 1:异常值剔除 2:空值填充 3:时空重采样)")
    private Integer cleanStatus = CleanStatusEnum.DATA_0.getCode();

    /** 是否完成异常值剔除(0:否 1:是) */
    @Excel(name = "是否完成异常值剔除(0:否 1:是)")
    private Integer handleCleanStatus1 = CommonOKNOEnum.NO.getCode();

    /** 是否完成空值填充(0:否 1:是) */
    @Excel(name = "是否完成空值填充(0:否 1:是)")
    private Integer handleCleanStatus2 = CommonOKNOEnum.NO.getCode();

    /** 是否完成时空重采样(0:否 1:是) */
    @Excel(name = "是否完成时空重采样(0:否 1:是)")
    private Integer handleCleanStatus3 = CommonOKNOEnum.NO.getCode();

    /** 读取状态(0:否 1:是) */
    @Excel(name = "读取状态(0:否 1:是)")
    private Integer readStatus = CommonOKNOEnum.NO.getCode();

    /** 航线计划 */
    @Excel(name = "航线计划")
    private String routePlan;

    /** 预计到达时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date projectedTime;

    /** 收发器类型 */
    @Excel(name = "收发器类型")
    private String transceiverType;

    /** 船位精确度转向率 */
    @Excel(name = "船位精确度转向率")
    private Double shipRate;

    /** 船首向 */
    @Excel(name = "船首向")
    private Double shipBow;

    /** 吃水深度 */
    @Excel(name = "吃水深度")
    private Double draftDepth;

    /** 转向速率 */
    @Excel(name = "转向速率")
    private Double waySpeed;

    /** 横倾角 */
    @Excel(name = "横倾角")
    private Double heelingAngle;

    /** 纵摇 */
    @Excel(name = "纵摇")
    private Double verticalTurn;

    /** 横摇 */
    @Excel(name = "横摇")
    private Double crosswiseTurn;


}
